/**
 * @author liangxi
 * @since 2023/12/21
 */

#ifndef DESIGNPATTERN_MALLARDDUCK_H
#define DESIGNPATTERN_MALLARDDUCK_H

#include <iostream>
#include "../Duck.h"
#include "../../Behavior/Fly/impl/FlyWithWings.h"
#include "../../Behavior/Quack/impl/Quack.h"

namespace Strategy {

    class MallardDuck : public Duck {
    public:
        MallardDuck() {
            setFlyBehavior(std::make_shared<FlyWithWings>());
            setQuackBehavior(std::make_shared<Quack>());
        }

        void display() override {
            std::cout << "I am a real Mallard duck" << std::endl;
        }
    };

} // Strategy

#endif //DESIGNPATTERN_MALLARDDUCK_H
